package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import model.Empresa;

public class EmpresaDAO {
	private Connection conexao;
	private Statement st;
	private ResultSet rs;
	Adaptador adaptador = new Adaptador();

	public void inserir(Empresa empresa) throws SQLException{
		conexao = adaptador.abrirConexao();
		String sql = "INSERT INTO Empresa( nome, endereco, telefone)VALUES (?, ?, ?)";
		PreparedStatement ps =  conexao.prepareStatement(sql);
		try{
			ps.setString(1, empresa.getNome());
			ps.setString(2, empresa.getEndereco());
			ps.setString(3, empresa.getTelefone());
			ps.execute();
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			ps.close();
		}
	}

	public ArrayList<Empresa> listar() throws SQLException{
		ArrayList<Empresa> empresas = new ArrayList<Empresa>();
		conexao = adaptador.abrirConexao();
		String sql = "SELECT * FROM Empresa";
		try{
			st = conexao.createStatement();
			rs = st.executeQuery(sql);
			while(rs.next()){
				String nome = rs.getString("nome");
				String endereco = rs.getString("endereco");
				String telefone = rs.getString("telefone");
				int codigo = Integer.parseInt(rs.getString("codigo"));
				Empresa now = new Empresa(nome, endereco, telefone);
				now.setCodigo(codigo);
				empresas.add(now);
			}

		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			st.close();
			rs.close();
		}
		return empresas;
	}

	public Empresa getEmpresaPeloCodigo(int codigo) throws SQLException {
		Empresa empresa = null;

		conexao = adaptador.abrirConexao();
		String sql = "SELECT * FROM Empresa WHERE codigo='"+codigo+"'";
		try{
			st = conexao.createStatement();
			rs = st.executeQuery(sql);
			rs.next();
			String nome = rs.getString("nome");
			String endereco = rs.getString("endereco");
			String telefone = rs.getString("telefone");
			empresa = new Empresa(nome, endereco, telefone);
			empresa.setCodigo(codigo);
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			st.close();
			rs.close();
		}

		return empresa;
	}

	public void deletar(int codigo)throws SQLException  {
		conexao = adaptador.abrirConexao();
		String sql = "DELETE FROM Empresa WHERE codigo='"+codigo+"'";
		try{
			st = conexao.createStatement();
			st.executeUpdate(sql);
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			st.close();
		}
		
	}

	public void atualizar(Empresa empresa) throws SQLException{
		conexao = adaptador.abrirConexao();
		String sql =  "UPDATE Empresa "+
					  "SET nome=?, endereco=?, telefone=? "+
					  "WHERE codigo=?";
		PreparedStatement ps = conexao.prepareStatement(sql);
		try{
			ps.setString(1,empresa.getNome());
			ps.setString(2,empresa.getEndereco());
			ps.setString(3,empresa.getTelefone());
			ps.setInt(4, empresa.getCodigo());
			ps.executeUpdate();
		}catch(SQLException sqle){
			sqle.getMessage();
		}finally{
			conexao.close();
			ps.close();
		}
	}


}
